package cn.tedu.file;

import java.io.*;

/*本类用于练习字节输入流*/
public class TestIn {
    public static void main(String[] args) {
        method1();//使用普通字节输入流读取
        //method2();//使用高效字节输入流读取
    }

    private static void method2() {
    }

    private static void method1() {
        //1.定义一个在本方法中都生效的局部变量,并给局部变量赋值
        InputStream in2 = null;
        try {
            //1.创建字节输入流对象用于读取
            //InputStream in = new InputStram();//会报错,因为抽象类不可实例化
//            InputStream in = new FileInputStream(new File("D:\\ready\\1.txt"));
            in2 = new FileInputStream("D:\\ready\\1.txt");

            //2.开始读取
            /*read()每次调用都会读取一个字节,如果读到了数据的末尾,返回-1*/
//            System.out.println(in2.read());
//            System.out.println(in2.read());
//            System.out.println(in2.read());
//            System.out.println(in2.read());
//            System.out.println(in2.read());
            //需求:需要循环读取文件中的所有内容,直至读完
            //定义变量,记录读到的数据
            int b;
            while((b = in2.read())!= -1){
                System.out.println(b);
            }
            in2.close();
        } catch (Exception e) {
            e.printStackTrace();//打印错误栈轨迹,出错了给程序猿看,方便调错
            /*finally{}是try-catch结构在的第3个部分
             * 这部分不论是否捕获到异常,是一定会被执行到的代码块,常用于关流*/
        }finally {
            //3.关流,流资源使用完毕必须释放!
            try {
                in2.close();
            } /*catch (IOException e) {
                e.printStackTrace();
            }*/ catch (IOException e) {
                throw new RuntimeException(e);//和e.printStackTrace()类似
            }
        }
    }
}
